#include "bc_zeroGradient.hpp"
#include "meshTypes.hpp"
#include "field.hpp"
#include "boundaryPatch.hpp"
#include "simulationTime.hpp"

namespace hms
{

template<typename MeshType>
ZeroGradient<MeshType>::ZeroGradient(
	Field<MeshType>& field,
	const BoundaryPatch& patch
) :
	BaseType( Type::zeroGradient, field, patch )
{}

template<typename MeshType>
void ZeroGradient<MeshType>::update() const {
	field().ghostValues( patch() ) = field().domainValues( patch() );
}

#define INSTANTIATE_FOR_ALL_MESHTYPES(MeshType) \
template class ZeroGradient<MeshType>;
#include "meshInstantiator.hpp"

} // end namespace hms